// import com.alibaba.druid.sql.ast.SQLExpr;
// import com.alibaba.druid.sql.ast.SQLName;
// import com.alibaba.druid.sql.ast.statement.SQLCreateStatement;
// import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor;
#pragma once
#include "OracleStatementImpl.h"
#include "../../../../ast/statement/SQLCreateStatement.h"

class OracleCreateDatabaseDbLinkStatement
    : virtual public OracleStatementImpl,
      virtual public SQLCreateStatement
{
public:
  BOOL_ptr shared;
  BOOL_ptr isPublic_;

  SQLName_ptr name;

  SQLName_ptr user;

  string_ptr password;

  SQLExpr_ptr using_;

  SQLExpr_ptr authenticatedUser;
  string_ptr authenticatedPassword;

  SHAREDOBJECT(OracleCreateDatabaseDbLinkStatement);
  BOOL_ptr isShared();

  void setShared(BOOL_ptr shared);

  BOOL_ptr isPublic();

  void setPublic(BOOL_ptr value);

  SQLName_ptr getName();

  void setName(SQLName_ptr name);

  SQLName_ptr getUser();

  void setUser(SQLName_ptr user);

  string_ptr getPassword();

  void setPassword(string_ptr password);

  SQLExpr_ptr getUsing();

  void setUsing(SQLExpr_ptr using_);

  SQLExpr_ptr getAuthenticatedUser();

  void setAuthenticatedUser(SQLExpr_ptr authenticatedUser);

  string_ptr getAuthenticatedPassword();

  void setAuthenticatedPassword(string_ptr authenticatedPassword);

  // @Override
  void accept0(OracleASTVisitor_ptr visitor);
};
